/**
 *
 *    DUT Informatique - IUT A - Universite des Sciences et Technologies de Lille 1 - Villeneuve d'Ascq
 *    Cours AP12 - DS1 - EX4
 *    http://moodle.univ-lille1.fr/course/view.php?id=1089
 *    http://dutinfo.tk
 *
 *    @author : Yann Secq
 *              Frederic Guyomarch
 *              <a href="mailto:charles.herlin@etudiant.univ-lille1.fr">Charles Herlin</a>
 *
 *
 */
 
 class EX4 extends Program {
    void algorithm() { 
        
        print("\nBonjour,\nEntrez votre date de naissance : ");
        String s = readString();
        s = s + "          ";
        
        boolean valide = false;
        boolean bissextile = false;
        
        int jour = 0; 
        int mois = 0;
        int annee = 0;
        
        
        //Test de validite
        while(!valide){
        	
        	while(charAt(s,1)<'0'||charAt(s,1)>'9'||
        			charAt(s,3)<'0'||charAt(s,3)>'9'||
        			charAt(s,4)<'0'||charAt(s,4)>'9'||
        			charAt(s,6)<'0'||charAt(s,6)>'9'||
        			charAt(s,7)<'0'||charAt(s,7)>'9'||
        			charAt(s,8)<'0'||charAt(s,8)>'9'||
        			charAt(s,9)<'0'||charAt(s,9)>'9'){
        				print("Cette saisie n'est pas dans un format valide.\nVeuillez reasaisir votre date de naissance sous le format jj/mm/aaaa : ");
        				s= readString();
        				s = s + "          ";
        			}
        		
        	jour = Integer.parseInt(substring(s, 0, 2));
        	mois = Integer.parseInt(substring(s, 3, 5));
        	annee = Integer.parseInt(substring(s, 6, 10));
        	
        	//Determination de bissextile ou pas
        	if(annee % 400 == 0){
        		bissextile = true;
        	}
        	else if(annee % 100 == 0){
        		bissextile = false;
        	}
        	else if(annee % 4 == 0){
        		bissextile = true;
        	}
        	else{
        		bissextile = false;
        	}
        	
        	
        	//Determination de la validite
        	if( annee>2012 || mois<1 || mois>12 || jour<1 || jour>31 ||
        		(mois==4 || mois==6 || mois==9 || mois==11)&&jour>30 ||
        		(mois==2 && bissextile && jour>29) ||
        		(mois==2 && !bissextile && jour>28) ||
        		(annee==2012 && (mois>4 || mois==4 && jour>4))){
        			valide = false;
        			print("Cette saisie n'est pas une date valide.\nVeuillez resaisir votre date de naissance : ");
        			s = readString();
        			s = s + "          ";
        		}
        	else{
        		valide = true;
        	}
        		
        }
        
        
        int j = 0;
        
        while(annee!=2013){
        	//bissextile ou pas
        	if(annee % 400 == 0){
        		bissextile = true;
        	}
        	else if(annee % 100 == 0){
        		bissextile = false;
        	}
        	else if(annee % 4 == 0){
        		bissextile = true;
        	}
        	else{
        		bissextile = false;
        	}
        	
        	//definir la limite de mois dans l'annee
        	int la=0;
        	if(annee== 2012)
        		la = 4;
        	else
        		la = 12;
        		
  
        	for(; mois<=la; ++mois){
        		//definir la limite de jours dans le mois
        		int lm=0;
        		if(annee==2012 && mois==4)
        			lm=3;
        		else if(mois==4 || mois==6 || mois==9 || mois==11)
        			lm=30; 
        		else if(mois==2 && bissextile)
        			lm=29;
        		else if(mois==2 && !bissextile)
        			lm=28;
        		else
        			lm=31;
        		
        		for(; jour<=lm; ++jour)
        			j++;
        			
        		jour=1;
        	}
        	
        	mois=1;
        	++annee;
        }
        
        println("\nVous etes ne, il y a "+j+" jours (au 4/04/2012).\n");
        
	}
}
